﻿using System;
using System.Collections.Generic;
using System.Reflection;
using Abs.Framework.Resource;
using System.ComponentModel;

namespace YiLong.Framework.EnumHelpers
{
    public static class EnumHelper
    {
        ///// <summary>
        ///// 根据Enum值，比如Sex.Male,返回描述
        ///// </summary>
        ///// <param name="value">Enum值，比如Sex.Male</param>
        ///// <returns></returns>
        //public static string GetEnumDescription(Enum value)
        //{
        //    var fi = value.GetType().GetTypeInfo().GetField(value.ToString());
        //    if (fi != null)
        //    {
        //        var des = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
        //        if (des.Length > 0)
        //        {
        //            return des[0].Description;
        //        }
        //    }
        //    return value.ToString();
        //}

        ///// <summary>
        ///// 根据Enum类型获取其项目列表
        ///// </summary>
        ///// <param name="enumType">使用typeof获取的Enum类型信息，比如typeof(Sex)</param>
        ///// <returns></returns>
        //public static List<KeyValuePair<string, string>> GetEnumList(Type enumType)
        //{
        //    var fields = enumType.GetFields();
        //    var result = new List<KeyValuePair<string, string>>();
        //    foreach (var item in fields)
        //    {
        //        var des = (DescriptionAttribute[])item.GetCustomAttributes(typeof(DescriptionAttribute), false);
        //        if (des.Length > 0)
        //        {
        //            int value = (int)item.GetValue(item.Name);
        //            var keyValue = new KeyValuePair<string, string>(value.ToString(), des[0].Description);
        //            result.Add(keyValue);
        //        }
        //    }

        //    return result;
        //}

        //public static List<KeyValuePair<string, string>> GetEnumList(Type enumType, AppendType appendType)
        //{
        //    switch (appendType)
        //    {
        //        case AppendType.All:
        //            return GetEnumList(enumType, "", ResFramework.AllValue);
        //        case AppendType.Select:
        //            return GetEnumList(enumType, "", ResFramework.SelectValue);
        //        case AppendType.None:
        //            return GetEnumList(enumType);
        //        default:
        //            break;
        //    }

        //    return new List<KeyValuePair<string, string>>();
        //}

        ///// <summary>
        ///// 根据Enum类型获取其项目列表,并在起始位置增加键值
        ///// </summary>
        ///// <param name="enumType">使用typeof获取的Enum类型信息，比如typeof(Sex)</param>
        ///// <param name="firstKey">默认在起始位置增加键值</param>
        ///// <param name="firstValue">默认在起始位置增加键值对应的值</param>
        ///// <returns></returns>
        //public static List<KeyValuePair<string, string>> GetEnumList(Type enumType, string firstKey, string firstValue)
        //{
        //    var list = GetEnumList(enumType);
        //    var firstKeyValue = new KeyValuePair<string, string>(firstKey, firstValue);
        //    list.Insert(0, firstKeyValue);
        //    return list;
        //}
    }
}
